package com.ruoyi.mobile.utils;

import org.gavaghan.geodesy.Ellipsoid;
import org.gavaghan.geodesy.GeodeticCalculator;
import org.gavaghan.geodesy.GeodeticCurve;
import org.gavaghan.geodesy.GlobalCoordinates;

import java.util.Objects;

/**
 * 经纬度范围判断
 */
public class PlatPunchUtil {
    /**
     * @param school_lng 学校经度
     * @param school_lat 学校纬度
     * @param user_lng 用户经度
     * @param user_lat 用户纬度
     * @return
     */
    public static double exceedDistance(String school_lng, String school_lat,String user_lng, String user_lat){
        GlobalCoordinates source = new GlobalCoordinates(Double.parseDouble(school_lat),Double.parseDouble(school_lng));
        GlobalCoordinates target = new GlobalCoordinates(Double.parseDouble(user_lat),Double.parseDouble(user_lng));
        //这是两种坐标系计算方法，这是第一种坐标系计算方法（我们用的这种）
        double geoCurve = getDistanceMeter(source, target, Ellipsoid.Sphere);
        //这是两种坐标系计算方法，这是第二种坐标系计算方法
        //double geoCurve2 = getDistanceMeter(source, target, Ellipsoid.WGS84);Ellipsoid.Sphere
        return geoCurve;
    }

    /* 经纬度计算工具类*/
    private static double getDistanceMeter(GlobalCoordinates gpsFrom,
                                           GlobalCoordinates gpsTo,
                                           Ellipsoid ellipsoid) {
        //创建GeodeticCalculator，调用计算方法，传入坐标系、经纬度用于计算距离
        GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);
        return geoCurve.getEllipsoidalDistance();
    }
}
